package com.iot.gateway.tsl.service;

import com.iot.gateway.tsl.model.OpenTokenRequest;
import com.iot.gateway.tsl.qo.SpecQo;

import java.util.Map;

/**
 * 设备协议扩展服务接口
 */
public interface TslDeviceSpecService {

    /** 全量写入或覆盖一台设备的所有 specs */
    void setSpecs(String deviceId, Map<String, Object> specs);

    /** 修改单个键 */
    void updateSpec(String deviceId, String specKey, SpecQo specQo);

    /** 删除单个键 */
    void deleteSpec(String deviceId, String specKey);

    /** 读取整条 JSON，反序列化为 Map */
    Map<String, Object> getSpecs(String deviceId);

    /**
     * 获取开放平台 open_token
     *
     * @param userId  可选，HTTP Header 中的 UserId
     * @param request 调用外部接口的请求体
     * @return open_token
     */
    String getOpenToken(String userId, OpenTokenRequest request);
}
